SOS_SCHEMA_MODULE

Section: SOS META CLASSES (3S)
Updated: 28/10/91
Index Return to Main Contents
man2html: unable to open or read file /usr/lib/ms/ms.acc
 

NAME

sos_Schema_module, sos_Schema_impl, sos_Type_table - module of SOS type declarations  

SYNOPSIS

#include "<SOS>/include/mta_sos.h"


typedef Mapping <sos_String, sos_Schema_type> sos_Type_table;


class sos_Schema_impl {};


class sos_Schema_module : sos_Named
{
public:
   static Directory<sos_Schema_module> schema_dir ();
   static sos_Schema_module            lookup (sos_String);
   static sos_Schema_module            retrieve (sos_Container);

   local  sos_String             name;
   local  sos_Imports            imports;
   local  List <sos_Schema_type> types;
   local  sos_Type_table         type_table;
          sos_Bool               has_external_import;
          sos_Bool               has_external_types;
   local  List <sos_Schema_impl> impls;

   sos_Schema_type  lookup_type (sos_String, sos_Bool = FALSE);
   void             open_imports ();
   void             close_imports ();
   void             install ();
};

 

DESCRIPTION

The class sos_Schema_impl is defined as a hook for implementation dependent subclasses, like cci_Schema_impl that are used by the specific run-time systems. The methods of these subclasses are still emerging; standard methods have not yet be defined.

sos_Schema_module implements SOS schema modules, that means collections of SOS type definitions.

sos_Schema_module::schema_dir ()
yields the SOS schema directory in which all SOS schema modules are located. The directory will be created if it does not exist.
sos_Schema_module::lookup (name)
yields the SOS schema module from the schema directory with the given name; if no such schema module exists, the result is NO_OBJECT.
sos_Schema_module::retrieve (sct)
yields the SOS schema module of the schema container sct.
[get/set]_name(...)
the name of the schema module.
[get/set]_imports(...)
the schema modules that are imported
[get/set]_types(...)
the list of types as they are declared in the schema, including implicitly declared types, like forward types and implicit instantiations of generic classes.
[get/set]_type_table(...)
the mapping from strings to types declared in the schema, including the mapping from alias names to the corresponding types. The mapping is based on the equality of the inserted keys (strings).
[get/set]_has_external_import(...)
the indication whether the schema has an external import through with extern;
[get/set]_has_external_types(...)
the indication whether the schema contains one or more external type declarations.
[get/set]_impls(...)
the list of implementations that have been generated for this schema.
lookup_type(name, look_for_alias)
yields an sos_Schema_type with the given name which is declared in the schema or (otherwise) in one of the imported modules; if no such type exists, the result is NO_OBJECT. If look_for_alias is TRUE, the given name may be an alias for the looked-up type; otherwise it must be the (exact) name of the type.
open_imports()
opens the containers of all imported schema modules for READING (WAITING).
close_imports()
closes the containers of all imported schema modules.
install()
inserts the schema into the schema directory. If a schema with the same name already exists, this schema is destroyed (including the desctruction of its container).
 

FILES

<SOS>/src/mta/mta.sos
SOS schema file

<SOS>/src/mta/mta_sos.h
complete schema interface

<SOS>/src/mta/mta_use.h
restricted schema interface

<SOS>/src/mta/mta.c
method implementation

<SOS>/lib/sos.a
SOS library
 

WARNINGS

The implementation makes the implicit assumption that all objects associated with a schema are located in the same container as the schema. This has at least an effect on synchronization strategy. We are not aware of other impacts but they should be considered.  

SEE_ALSO

cci_Schema_impl(3), sos_Imports(3)  

AUTHOR

Jurgen Uhl


 

Index

NAME
SYNOPSIS
DESCRIPTION
FILES
WARNINGS
SEE_ALSO
AUTHOR

This document was created by man2html, using the manual pages.
Time: 00:37:57 GMT, March 30, 2022